package com.janko.springbootbase.designmode.proxyDynamic;

/**
 * @Author nyk
 * @Date 2021/6/9 14:16
 * @Version 1.0
 * @Desc 动态代理实现类或者叫 JDK 代理或接口代理
 */
public class Main {
    /**
     * 1、静态代理：特点是代理类和目标类在代码中是确定。 静态代理可以在【不修改目标对象】功能的前提下，对目标功能进行扩展
     * 2、动态代理：
     *      1. 代理对象不需要去实现接口，
     *      2. 代理对象的生成是利用JDK的API动态的在内存中构建。
     *          static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h )
     *              ClassLoader loader：指定当前目标对象使用类加载器，获取加载器的方法是固定的
     *              Class<?>[] interfaces：目标对象实现的接口的类型，使用泛型方式确认类型
     *              InvocationHandler h：事件处理，执行目标对象的方法时，会触发事件处理器的方法，把当前执行目标对象的方法作为参数传入
     *      3. 可以在代码运行时去为代理对象添加 方法和实现
     */

    public static void main(String[] args) {
        JdkProxyWangPo jdkProxyWangPo=new JdkProxyWangPo();
        KindWomen pan=jdkProxyWangPo.getInstance(new PanJinLian());
        pan.makeEyesWithMan();


    }
}
